<template>
  <sv-page :showNavBar="false">
    <sv-nav-bar :pageTitle="pageTitle"></sv-nav-bar>
    <view class="sv-exam-plus-page">
      <sv-exam-plus
        type="practice"
        :data="examData"
        :showCard="false"
        @changePaper="changePaper"
        @quit="onQuit"
      ></sv-exam-plus>
    </view>
  </sv-page>
</template>

<script>
export default {
  data() {
    return {
      examData: [], // 题目列表
      pageTitle: ''
    }
  },
  onLoad() {
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.once('e-transmit-exams', async (res) => {
      this.init() // 初始化操作
      this.pageTitle = res.title
      this.examData = res.data
      this.$nextTick(() => {
        uni.$emit('sv-exam-start', res.index)
      })
      // 开启相关事件监听
      this.examWatcher()
    })
  },
  onUnload() {
    console.log('=== 页面卸载 移除所有监听 ===')
    // 移除事件监听 建议在此处将考试相关所有监听统一移除
    uni.$off('e-exam-paper-item-submit')
    uni.$off('e-exam-paper-item-feedback')
  },
  methods: {
    init() {
      // 初始化操作
    },
    /**
     * 切换题目
     * @param {Object} e 当前题目
     */
    changePaper(e) {
      // console.log('==== 切换题目 :', e)
    },

    /**
     * 退出考试
     * @param {Object} e 做题记录，可缓存或上传云端，用作下一次打开后继续进度
     */
    onQuit(e) {
      // console.log('==== 退出考试 :', e)
    },
    // exam相关事件监听
    examWatcher() {
      /**
       * 监听题目提交
       * @param e 题目记录: 可根据返回的题目记录，自定义选择存入做题记录或错题本
       */
      uni.$on('e-exam-paper-item-submit', (e) => {
        // console.log('==== 监听题目提交 e-exam-paper-item-submit :', e)
      })

      /**
       * 监听纠错反馈
       * @param e 纠错反馈的题目
       */
      uni.$on('e-exam-paper-item-feedback', (e) => {
        // console.log('==== 监听纠错反馈 e-exam-paper-item-feedback :', e)
        uni.navigateTo({
          url: '/pages/feedback/feedback',
          success(res) {
            res.eventChannel.emit('e-transmit-feedback', e)
          }
        })
      })
    }
  }
}
</script>

<style lang="scss">
.sv-exam-plus-page {
  width: 100%;
  height: var(--page-notab-height);
}
</style>
